package com.antcom.antread.common.core.baseRest.domain;

import com.antcom.antread.common.core.utils.string.StringUtils;


/**
 * 查询条件类
 * 存储查询条件，前端将查询数据通过此类传入后台，后台对该类进行解析，组装查询条件
 * @author 中国蚂蚁技术有限公司
 */
public class QueryConditions {
    /**
     * 段对应的数据类型
     * */
    private FieldType fieldType;
    /**
     * 字段名，需要和数据实体里的字段名相对应
     * */
    private String field;
    /**
     * 查询值：如果是单项比较，将值存入该字段即可
     * 如果为区间查询(between)该字段用于存储最小值
     * */
    private Object valueMin;
    /**
     * 查询值：如果是单项比较，将该值质控
     * 如果为区间查询(between)该字段用于存储最大值
     * */
    private Object valueMax;
    /**
     * 是否是作者
     * */
    private boolean thisLevel;
    /**
     * 比较方式
     * */
    private ComparisonType Comparison;

    /**
     * 判断该实例下的搜索的前置条件是否完备
     * */
    public boolean isAvailable(){
        if(StringUtils.isEmpty(this.field)){
            return false;
        }
        if(this.valueMin==null){
            return false;
        }
        if(this.fieldType==null){
            return false;
        }
        if(this.Comparison==null){
            this.Comparison=ComparisonType.BLURRY;
        }
        return true;
    }
    public FieldType getType() {
        return fieldType;
    }
    public void setType(FieldType type) {
        this.fieldType = type;
    }

    public String getField() {
        return field;
    }

    public void setField(String field) {
        this.field = field;
    }

    public Object getValueMin() {
        return valueMin;
    }

    public void setValueMin(Object valueMin) {
        this.valueMin = valueMin;
    }

    public Object getValueMax() {
        return valueMax;
    }

    public void setValueMax(Object valueMax) {
        this.valueMax = valueMax;
    }

    public ComparisonType getComparison() {
        return Comparison;
    }

    public void setComparison(ComparisonType comparison) {
        Comparison = comparison;
    }
    public boolean getThisLevel() {
        return thisLevel;
    }

    public void setThisLevel(boolean thisLevel) {
        this.thisLevel = thisLevel;
    }
}
